package com.demo.pattern.template;

/**
 * @author linchong
 * @version 1.0
 * @Date: 2022-05-24 21:48
 * @Description: KTVRoom$
 */
public abstract class KTVRoom {

	public void procedure(){
		openDevice();
		orderSong();
		orderExtra();
		pay();
	}

	//模板自带方法
	private void openDevice() {
		System.out.println("打开视频和音响");
	}

	//子类必须实现的方法
	protected abstract void orderSong();

	//钩子，额外开销视情况选择
	protected void orderExtra(){};

	//模板自带方法
	private void pay(){
		System.out.println("支付本次消费账单...");
	}
}
